package 力扣;

/**
 给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串，则返回空字符串 "" 。
 注意：如果 s 中存在这样的子串，我们保证它是唯一的答案。
 示例 1：
 输入：s = "ADOBECODEBANC", t = "ABC"
 输出："BANC"
 示例 2：
 输入：s = "a", t = "a"
 输出："a"
 */
public class _76最小覆盖子串 {
    public String minWindow(String s, String t) {
        if( s == null || s.length() ==0 ) return "";
        if( t == null || t.length() ==0 ) return "";
        if ( s.length() < t.length()) return "";
        if(s.length()==t.length()&& !s.contains(t))return "";
        int min=s.length(); //最小长度
        int index = 0;

        for (int i = 0; i < s.length(); i++) {
            int j = i + t.length()+1; // 获取做小长度的起始索引
            while(j< s.length()&& !(s.substring(i,j).contains(t))){
                j++;
            }
            if( j-i < min){
                min = j-i; // 获取做小长度的起始索引
                index = i; // 获取做小长度的起始索引
            }
        }
        StringBuffer sb = new StringBuffer();
        for(int i=index;i<index+min;i++){
            sb.append(s.charAt(i));
        }
        return sb.toString();
    }


}
